package com.loong.common.alipay.param;

import com.alibaba.fastjson.annotation.JSONField;
import com.alipay.api.domain.AgreementSignParams;
import com.alipay.api.domain.ExtUserInfo;
import com.alipay.api.domain.ExtendParams;
import com.alipay.api.domain.GoodsDetail;
import com.loong.common.validator.group.CommonValidate;
import lombok.*;

import javax.validation.constraints.NotBlank;

/**
 * @Description:
 * @Author: 刘群
 * @Date: 2020/10/12 16:05
 */
@Builder
@Setter
@Getter
@NoArgsConstructor
@AllArgsConstructor
public class AppPayParam {

    /**
     * 订单总金额
     */
    @NotBlank(message = "订单总金额必选",groups = {CommonValidate.class})
    @JSONField(name = "total_amount")
    private String totalAmount;

    /**
     * 商品标题/交易标题/订单标题/订单关键字
     */
    @NotBlank(message = "必选",groups = {CommonValidate.class})
    private String subject;

    /**
     * 商户网站唯一订单号
     */
    @NotBlank(message = "商户订单号必选",groups = {CommonValidate.class})
    @JSONField(name = "out_trade_no")
    private String outTradeNo;

    /**
     * 最晚付款时间
     */
    @JSONField(name = "timeout_express")
    private String timeoutExpress;

    /**
     * 销售产品代码
     */
    @JSONField(name = "product_code")
    private String productCode;

    /**
     * 对一笔订单的具体描述信息
     */
    private String body;

    /**
     *绝对超时时间
     */
    @JSONField(name = "time_expire")
    private String timeExpire;

    /**
     * 商品主类型
     */
    @JSONField(name = "goods_type")
    private String goodsType;

    /**
     * 优惠参数
     */
    @JSONField(name = "promo_params")
    private String promoParams;

    /**
     * 公用回传参数
     */
    @JSONField(name = "passback_params")
    private String passbackParams;

    /**
     *业务扩展参数
     */
    @JSONField(name = "extend_params")
    private ExtendParams extendParams;

    /**
     * 商户原始订单号
     */
    @JSONField(name = "merchant_order_no")
    private String merchantOrderNo;

    /**
     * 可用渠道
     */
    @JSONField(name = "enable_pay_channels")
    private String enablePayChannels;

    /**
     * 商户门店编号
     */
    @JSONField(name = "store_id")
    private String storeId;

    /**
     * 指定渠道
     */
    @JSONField(name = "specified_channel")
    private String specifiedChannel;

    /**
     * 禁用渠道
     */
    @JSONField(name = "disable_pay_channels")
    private String disablePayChannels;

    /**
     * 订单包含的商品列表信息
     */
    @JSONField(name = "goods_detail")
    private GoodsDetail goodsDetail;

    /**
     * 外部指定买家
     */
    @JSONField(name = "ext_user_info")
    private ExtUserInfo extUserInfo;

    /**
     * 商户传入业务信息
     */
    @JSONField(name = "business_params")
    private String businessParams;

    /**
     * 描述结算信息
     */
    @JSONField(name = "settle_info")
    private String settleInfo;

    /**
     * 开票信息
     */
    @JSONField(name = "invoice_info")
    private String invoiceInfo;

    /**
     * 签约参数
     */
    @JSONField(name = "agreement_sign_params")
    private AgreementSignParams agreementSignParams;

}
